#include <16F877A.h>
//#include<stdio.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
//#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)

#define HIGH 1
#define LOW 0
#define SELECT 0

unsigned char ch=0;

void forward()
 {
output_bit(PIN_B0,HIGH);
output_bit(PIN_B1,LOW);
output_bit(PIN_B2,LOW);
output_bit(PIN_B3,HIGH);
 }

void reverse()
 {
output_bit(PIN_B0,LOW);
output_bit(PIN_B1,HIGH);
output_bit(PIN_B2,HIGH);
output_bit(PIN_B3,LOW);
 }

void turn_left()
 {
output_bit(PIN_B0,LOW);
output_bit(PIN_B1,HIGH);
output_bit(PIN_B2,LOW);
output_bit(PIN_B3,HIGH);
 }

void turn_right()
{
output_bit(PIN_B0,HIGH);
output_bit(PIN_B1,LOW);
output_bit(PIN_B2,HIGH);
output_bit(PIN_B3,LOW);
}

void stop()
 {
output_bit(PIN_B0,LOW);
output_bit(PIN_B1,LOW);
output_bit(PIN_B2,LOW);
output_bit(PIN_B3,LOW);
 }

void main()
{
port_b_pullups(TRUE);
output_b(0x00);
output_c(0xff);
while(1)
  {
      ch=input_c();
          if(ch==0xFE)
            {
             forward();
            }
         else if(ch==0xFD)
            {
              reverse();
            }
         else if(ch==0xFB)
            {
              turn_left();
            }
        else if(ch==0xFC)
            {
              turn_right();
            }
        else if(ch==0xF7)
            {
              stop();
            }
           output_c(0xff);
           output_b(0x00);
}
}
